// packages-center/vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import federation from '@originjs/vite-plugin-federation'
import path from 'path'
export default defineConfig({
  // 确保开发服务器端口是我们设定的 3001
  server: {
    port: 3001,
  },
  // 源码地图
  sourcemap: true,
  plugins: [
    vue(),
    federation({
      // 模块联邦的全局唯一名称
      name: 'packages-center', 
      // 导出的入口文件名
      filename: 'remoteEntry.js', 
      
      // exposes: 定义需要暴露的模块
      exposes: {
        // './CoolButton' 是外部访问的别名
        // './src/components/CoolButton.vue' 是组件的实际路径
        './CoolButton': './src/components/CoolButton.vue',

        //共享工具函数 
        './formatters': './src/utils/format.js',

        //共享路由页面
        './ShareView': './src/view/Share.vue',
        //因为 下面两个路由使用到了 AboutView  HomeView 所以也得共享出去到 消费端
        './AboutView': './src/view/About.vue',
        './HomeView': './src/view/Home.vue'
      },
      
      // shared: 定义需要与 Host 共享的依赖
      // 这可以避免重复加载，减小包体积，并防止因版本不一致导致的问题
      shared: ['vue', 'vue-router'] 
    })
  ],
  resolve: {
      alias: {
        '@': path.resolve(__dirname, 'src')
      },
      extensions: ['.js', '.json', '.vue', '.less', '.ts']
    },
  build: {
    target: 'esnext' // 浏览器兼容性目标
  }
})
